
/**
 * 上传文件
 * @param {String} filePath 文件路径
 * @returns {Promise} 上传结果
 */
export const uploadFile = (filePath) => {
  return new Promise((resolve, reject) => {
    const token = uni.getStorageSync('token');
    
    // const baseUrl = 'http://localhost:8080/api';
    // 使用与其他API相同的环境检测逻辑获取基础URL
    const baseUrl = (() => {
      // 判断平台
      if (process.env.NODE_ENV === 'development') {
          // 开发环境，区分真机和模拟器
          // #ifdef H5
          return 'http://localhost:8080/api';
          // #endif
          
          // #ifdef MP-WEIXIN
          const platform = uni.getSystemInfoSync().platform;
          // 真机环境下使用实际IP地址，模拟器仍使用localhost
          return platform === 'devtools' ? 'http://localhost:8080/api' : 'http://192.168.0.100:8080/api';
          // #endif
      } else {
          // 生产环境使用实际服务器地址
          return 'http://192.168.0.100:8080/api';
      }
    })();
    
    uni.uploadFile({
      url: baseUrl + '/file/upload',
      filePath: filePath,
      name: 'file',
      header: {
        'Authorization': token ? `Bearer ${token}` : ''
      },
      success: (res) => {
        try {
          if (res.statusCode === 200) {
            const data = JSON.parse(res.data);
            if (data.code === 200) {
              resolve(data);
            } else {
              uni.showToast({
                title: data.message || '上传失败',
                icon: 'none'
              });
              reject(data);
            }
          } else {
            uni.showToast({
              title: '上传失败',
              icon: 'none'
            });
            reject(new Error('上传失败'));
          }
        } catch (e) {
          uni.showToast({
            title: '解析响应失败',
            icon: 'none'
          });
          reject(e);
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '上传失败',
          icon: 'none'
        });
        reject(err);
      }
    });
  });
}

/**
 * 获取图片完整URL
 * @param {string} url 图片相对路径
 * @returns {string} 完整URL
 */
export const getImageUrl = (url) => {
  if (!url) return '/static/default-cover.png';
  
  // 如果已经是完整URL则直接返回
  if (url.startsWith('http://') || url.startsWith('https://')) {
    return url;
  }
  
  // 确保正确处理 /uploads 路径
  // 使用与config.js相同的基础URL获取方式
  const baseUrl = (() => {
    // 判断平台
    if (process.env.NODE_ENV === 'development') {
        // 开发环境，区分真机和模拟器
        // #ifdef H5
        return 'http://localhost:8080/api';
        // #endif
        
        // #ifdef MP-WEIXIN
        const platform = uni.getSystemInfoSync().platform;
        // 真机环境下使用实际IP地址，模拟器仍使用localhost
        // 修改为您的实际服务器IP地址
        return platform === 'devtools' ? 'http://localhost:8080/api' : 'http://192.168.0.100:8080/api';
        // #endif
    } else {
        // 生产环境使用实际服务器地址
        return 'http://192.168.0.100:8080/api';
    }
  })();
  
  console.log(baseUrl + url);
  // 处理相对路径，确保格式正确
  if (url.startsWith('/uploads/')) {
    return baseUrl + url;
  } else if (url.startsWith('/api/uploads/')) {
    // 移除/api前缀以避免重复
    return baseUrl + url.substring(4);
  } else if (url.startsWith('uploads/')) {
    return baseUrl + '/' + url;
  } else {
    return baseUrl + '/uploads/' + url;
  }
}; 